#ifndef EXCEPTIONS_H
#define EXCEPTIONS_H

#include "Basic/Base.h"
#include "Basic/GxString.h"

namespace GxLibBasic
{

	class Exception : public Object
	{
	protected:
		
		String SrcName;
		Int LineNumber;
	public:
		String Text;
		Exception(String src=L"", Int line=0);
		Exception(String EText, String src, Int line=0);
		Exception(const Exception & e);
	};

	class gxMemAllocException: public Exception
	{
	public:
		gxMemAllocException(String src=L"", Int line=0);
	};

	class gxIndexOutOfRangeException : public Exception
	{
	public:
		gxIndexOutOfRangeException(String src=L"", Int line=0);
	};

	class gxFileSystemException: public Exception
	{
	public:
		gxFileSystemException(String FileName,String src = L"", Int line = 0);
	};

	class gxDllLinkException : public Exception
	{
	public:
		gxDllLinkException(String DllName, String src = L"", Int Line =0);
	};

	class gxNotImplementedException : public Exception
	{
	};

	class gxArgumentException : public Exception
	{};

}

#endif